/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.siteEncheres.client.utilisateur;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.History;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.TextBox;
import com.gwtext.client.widgets.MessageBox;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.form.Label;
import com.gwtext.client.widgets.form.TextField;
import com.gwtext.client.widgets.layout.HorizontalLayout;
import com.gwtext.client.widgets.layout.VerticalLayout;

/**
 *
 * @author Francois
 */
public class IhmIdentifierUtilisateur extends Panel {
    
    TextBox txtLogin = new TextBox();
    TextField txtMdp = new TextField();
    Button btn = new Button("Ouvrir une session");
    final Panel panelIdentifier = this;
    
    final AsyncCallback callback = new AsyncCallback() {

        @Override
        public void onSuccess(Object result) {
            History.newItem("Connexion");
        }
        
        @Override
        public void onFailure(Throwable caught) {
            String exception = formaterException(caught.getMessage());
            MessageBox.alert(exception);
        }
    };
    
    public IhmIdentifierUtilisateur() {
        panelIdentifier.setBorder(false);  
        panelIdentifier.setPaddings(10);
        panelIdentifier.setFrame(true);
        panelIdentifier.setLayout(new VerticalLayout(10));
        
        ///////////// Panel login ///////////////////
        Panel pLbl = new Panel();
        pLbl.setLayout(new HorizontalLayout(59));
        pLbl.add(new Label("Login"));
        txtLogin.setMaxLength(50);
        pLbl.add(txtLogin);
        panelIdentifier.add(pLbl);
        //////////////////////////////////////////////////////

        ///////////// Panel mdp ///////////////////
        Panel pTxtBox = new Panel();
        pTxtBox.setLayout(new HorizontalLayout(20));
        pTxtBox.add(new Label("Mot de passe"));
        txtMdp.setPassword(true);
        txtMdp.setMaxLength(50);
        pTxtBox.add(txtMdp);
        panelIdentifier.add(pTxtBox);
        panelIdentifier.add(btn);
        //////////////////////////////////////////////////////
        

        btn.addClickHandler(new ClickHandler() {
            
            @Override
            public void onClick(ClickEvent w) {
            getService().identifier(txtLogin.getText(), txtMdp.getText(), callback);
            }
        });
        
    }
    
    public static GwtUtilisateurAsync getService() {
        return GWT.create(GwtUtilisateur.class);
    }
    
    /**
     * M√©thode servant a separer le "java.lang.Exception:" du
     * message de l'exception qu on ne veut pas a l affichage.
     * 
     * @param exception Message contenu dans l exception.
     * @return ce qu il y a apres le "java.lang.Exception"
     * si cette chaine est presente, le message en entier sinon.
     */
    public String formaterException(String exception){
        String[] split = exception.split(":");
        if(split[0].compareTo("java.lang.Exception") == 0){
            return split[1];
        }
        else return exception;
    }
}
